from flask import current_app
from werkzeug.exceptions import HTTPException

from app import create_app
from app.libs.error import APIException
from app.libs.error_code import ServerError

app = create_app()


@app.errorhandler(Exception)
def framework_error(e):
    # flask1.0后才有
    # 异常分类  预知的异常 和 未知异常  APIException

    if isinstance(e, APIException):
        return e

    if isinstance(e, HTTPException):
        code = e.code
        msg = e.description
        error_code = 1007
        return APIException(msg, code, error_code)
    else:
        if current_app.config['DEBUG']:
            raise e
        else:
            return ServerError()


if __name__ == '__main__':
    app.run(debug=app.config['DEBUG'])  # DEBUG模式默认是False

# restfull api

# 手机 电脑 平板
# 浏览器 app 小程序

# 客户端 非常多 复杂
# 网页

# 统一接口 网页 异步 请求统一的接口
# restfull




# 用户认证 网站 cookie session 会话跟踪技术去实现 浏览器中

# API接口 浏览器 app 小程序

# token  微信公众平台

# 钥匙


# token

# get_token request  username password
# get_token response token (带上用户ID, 加密, 时效性)


# order_list request  token   response

# 身份证 时效性

# HttpbasicAuth
